package com.micro.service;

import java.util.List;

import com.micro.controller.request.AddHotelRequest;
import com.micro.controller.request.HotelBookingRequest;
import com.micro.dto.HotelDTO;
import com.micro.dto.HotelOrderDTO;
import com.micro.entity.Hotel;
import com.micro.entity.HotelOrder;

public interface HotelService {


    /**
     * 根据城市搜索酒店。
     * @param city 要搜索酒店的城市名称。
     * @return HotelDTO 列表。
     */
    List<HotelDTO> searchHotelsByCity(String city);//search接口要用

    /**
     * 根据酒店名称和城市搜索酒店列表。
     * @param hotelName 要搜索的酒店名称。
     * @param city 要搜索酒店所在的城市名称。
     * @return HotelDTO 列表。
     */
    List<HotelDTO> searchHotelByNameAndCity(String hotelName, String city);//hotelName接口要用

    /**
     * 根据酒店ID获取酒店信息。
     * @param hotelId 酒店ID。
     * @return Hotel 实体。
     */
    Hotel getHotelById(Long hotelId);

    /**
     * 预订酒店房间。
     * @param request 预订请求详情。
     * @return 创建的 HotelOrder 实体。
     */
    HotelOrder bookHotel(HotelBookingRequest request);

    /**
     * 取消酒店预订。
     * @param orderId 要取消的订单ID。
     * @return 如果取消成功返回 true，否则返回 false。
     */
    boolean cancelBooking(Long orderId);

    /**
     * 获取用户的酒店预订历史记录。
     * @param userId 用户ID。
     * @return HotelOrderDTO 列表。
     */
    List<HotelOrderDTO> getUserBookingHistory(Long userId);

    /**
     * 添加新的酒店。
     * @param request 添加酒店的请求详情。
     * @return 创建的 Hotel 实体。
     */
    Hotel addHotel(AddHotelRequest request);
}